package cn.edu.lingnan.lsqn.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

import cn.cdahua.basic.model.SystemContext;

public class SystemContextFilter implements Filter{

	@Override
	public void destroy() {
		
	}

	@Override
	public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
			throws IOException, ServletException {
		HttpServletRequest request = (HttpServletRequest) req;
		SystemContext.setOffset(getOffset(request));
		SystemContext.setPageSize(getPagesize(request));
		try{
			chain.doFilter(req, res);
		}finally{
			SystemContext.removeOffset();
			SystemContext.removePageSize();
		}
	}

	@Override
	public void init(FilterConfig arg0) throws ServletException {
		
	}
	
	private int getOffset(HttpServletRequest request){
		String o = request.getParameter("pager.offset");
		if(o==null||o.equals(""))
			o="0";
		return Integer.parseInt(o);
	}
	private int getPagesize(HttpServletRequest request){
		String o = request.getParameter("pager.pagesize");
		if(o==null||o.equals(""))
			o="15";
		return Integer.parseInt(o);
	}

}
